package com.sws.reservation.service;

import java.util.List;
import com.sws.reservation.domain.RyReservation;

/**
 * 用户预约服务Service接口
 * 
 * @author cx
 * @date 2025-06-30
 */
public interface IRyReservationService 
{
    /**
     * 查询用户预约服务
     * 
     * @param id 用户预约服务主键
     * @return 用户预约服务
     */
    public RyReservation selectRyReservationById(Long id);

    /**
     * 查询用户预约服务列表
     * 
     * @param ryReservation 用户预约服务
     * @return 用户预约服务集合
     */
    public List<RyReservation> selectRyReservationList(RyReservation ryReservation);

    /**
     * 新增用户预约服务
     * 
     * @param ryReservation 用户预约服务
     * @return 结果
     */
    public int insertRyReservation(RyReservation ryReservation);

    /**
     * 修改用户预约服务
     * 
     * @param ryReservation 用户预约服务
     * @return 结果
     */
    public int updateRyReservation(RyReservation ryReservation);

    /**
     * 批量删除用户预约服务
     * 
     * @param ids 需要删除的用户预约服务主键集合
     * @return 结果
     */
    public int deleteRyReservationByIds(Long[] ids);

    /**
     * 删除用户预约服务信息
     * 
     * @param id 用户预约服务主键
     * @return 结果
     */
    public int deleteRyReservationById(Long id);
    
    /**
     * 根据技师PID查询相关预约
     * 
     * @param staffPid 技师PID
     * @param status 预约状态(可选)
     * @return 预约列表
     */
    public List<RyReservation> selectRyReservationByStaffPid(String staffPid, Integer status);
    
    /**
     * 根据顾客PID查询相关预约
     * 
     * @param customerPid 顾客PID
     * @param status 预约状态(可选)
     * @return 预约列表
     */
    public List<RyReservation> selectRyReservationByCustomerPid(String customerPid, Integer status);
    
    /**
     * 取消预约
     * 
     * @param id 预约ID
     * @param customerPid 顾客PID(用于验证)
     * @return 结果
     */
    public int cancelReservation(Long id, String customerPid);
    
    /**
     * 更新预约状态
     * 
     * @param id 预约ID
     * @param status 新状态
     * @param staffPid 技师PID(用于验证)
     * @return 结果
     */
    public int updateReservationStatus(Long id, Integer status, String staffPid);
}
